REM * Manned Space Log 1.0 (c) Gene Heitman 05/02/88 REM * REM * mission$ - is a matrix containing the mission data REM * pt% - points to elements in mission$ matrix REM * fld$ - contains the labels for the fields in m$ REM * fldlen% - lengths of each of the fields REM * veh$ - data for vehicle totals REM * veh% - contains actual vehicle totals REM * annual% - contains the annual mission totals REM * final% - contains the final mission totals CLEAR ,97000,3000 WIDTH 80 OPTION BASE 1 DIM mission$(360,11),pt%(360),fld$(11),fldlen%(11),veh$(38,3),veh%(38),annual%(30,2),final%(2) fld$(1)="Mission":fld$(2)="Nation":fld$(3)="Date":fld$(4)="Site" fld$(5)="Vehicle":fld$(6)="Weight (LBS)":fld$(7)="Period (MIN)" fld$(8)="Perigee (MI)":fld$(9)="Apogee (MI)":fld$(10)="Inclination (DEG)" fld$(11)="Remarks" fldlen%(1)=19:fldlen%(2)=4:fldlen%(3)=8:fldlen%(4)=8:fldlen%(5)=18 fldlen%(6)=6:fldlen%(7)=5:fldlen%(8)=5:fldlen%(9)=5:fldlen%(10)=5 fldlen%(11)=37 CLS PRINT "Manned Space Log 1.0 (c) 1988 by Gene Heitman" PRINT loaddata: PRINT "Loading mission data - please wait." OPEN "SLMissions" FOR INPUT AS #1 count%=1 WHILE NOT EOF(1) FOR fld%=1 TO 11 INPUT# 1,mission$(count%,fld%) NEXT fld% pt%(count%)=count% count%=count%+1 WEND CLOSE #1 count%=count%-1 definemenu: MENU 1,0,1,"Change File" MENU 1,1,1,"Add New Mission" MENU 1,2,1,"Change Mission" MENU 1,3,1,"Delete Mission" MENU 1,4,1,"Save Changes" MENU 2,0,1,"List Missions" MENU 2,1,1,"All Missions" MENU 2,2,1,"By Mission" MENU 2,3,1,"By Nation" MENU 2,4,1,"By Date" MENU 2,5,1,"By Site" MENU 2,6,1,"By Vehicle" MENU 3,0,1,"Show Totals" MENU 3,1,1,"Vehicle Table" MENU 3,2,1,"Annual Table" MENU 3,3,1,"Annual Graph" MENU 4,0,1,"Quit" MENU 4,1,1,"Quit SpaceLog" CLS PRINT "Press the right mouse button and choose a menu." choice=0 WHILE choice<>4 choice=MENU(0) ON choice GOSUB changefile,listmissions,showtotals,quit WEND quit: MENU RESET CLS END changefile: ON MENU(1) GOSUB addnewmission,changemission,deletemission,savefile RETURN listmissions: subchoice=MENU(1) ON subchoice GOSUB allmissions,bymission,bynation,bydate,bysite,byvehicle RETURN showtotals: ON MENU(1) GOSUB vehicletable,annualtable,annualgraph RETURN addnewmission: CLS IF count%=360 THEN PRINT "The SLMissions data file is full." ELSE count%=count%+1 pt%(count%)=count% PRINT "Add new mission #";count% PRINT FOR var%=1 TO 11 PRINT "What is the new ";fld$(var%); INPUT mission$(count%,var%) mission$(count%,var%)=UCASE$(mission$(count%,var%)) IF LEN(mission$(count%,var%))>fldlen%(var%) THEN mission$(count%,var%)=LEFT$(mission$(count%,var%),fldlen%(var%)) PRINT "The field is too long. It is truncated to";fldlen%(var%);"characters." END IF NEXT var% num1%=count% GOSUB checknation GOSUB checkdate count$=RIGHT$(mission$(count%,3),2)+LEFT$(mission$(count%,3),2)+MID$(mission$(count%,3),4,2) var%=1 comp$="" WHILE (count$>=comp$) AND (var%<=count%-1) comp$=RIGHT$(mission$(pt%(var%),3),2)+LEFT$(mission$(pt%(var%),3),2)+MID$(mission$(pt%(var%),3),4,2) IF (count$count% THEN getnumber PRINT GOSUB printdata PRINT "The fields are:" PRINT FOR var%=1 TO 11 PRINT var%;"- ";fld$(var%) NEXT var% getfield: PRINT INPUT "What field do you want to change ( 1 - 11 )";var2% IF var2%<1 OR var2%>11 THEN getfield PRINT PRINT "The ";fld$(var2%);" is : ";mission$(pt%(num%),var2%) PRINT "What is the new ";fld$(var2%); INPUT mission$(pt%(num%),var2%) mission$(pt%(num%),var2%)=UCASE$(mission$(pt%(num%),var2%)) num1%=pt%(num%) GOSUB checknation GOSUB checkdate IF LEN(mission$(pt%(num%),var2%))>fldlen%(var2%) THEN mission$(pt%(num%),var2%)=LEFT$(mission$(pt%(num%),var2%),fldlen%(var2%)) PRINT PRINT "The field is too long. It is truncated to";fldlen%(var2%);"characters." END IF PRINT PRINT "Return to the menu." RETURN deletemission: CLS getnum: PRINT "Delete what mission # ( 1 -";count%;")"; INPUT num% PRINT IF num%<1 OR num%>count% THEN getnum GOSUB printdata getcorrect: INPUT "Is this correct ( Y / N )";var$ var$=UCASE$(var$) IF var$<>"Y" AND var$<>"N" THEN getcorrect IF var$="Y" THEN mission$(pt%(num%),2)="X" PRINT PRINT "Return to the menu." RETURN allmissions: CLS GOSUB bounds GOSUB startkey var$="" num%=low% WHILE (num%<=high%) AND (var$<>CHR$(13)) IF mission$(pt%(num%),2)<>"X" THEN GOSUB printdata GOSUB getkey END IF num%=num% + 1 WEND PRINT "Return to the menu." RETURN bymission: bynation: bydate: bysite: byvehicle: CLS PRINT "What is the ";fld$(subchoice-1); INPUT cp$ cp$=UCASE$(cp$) PRINT GOSUB bounds GOSUB startkey var$="" num%=low% WHILE (num%<=high%) AND (var$<>CHR$(13)) IF (mission$(pt%(num%),2)<>"X") AND (LEFT$(mission$(pt%(num%),subchoice-1),LEN(cp$))=cp$) THEN GOSUB printdata GOSUB getkey END IF num%=num% + 1 WEND PRINT "Return to the menu." RETURN vehicletable: CLS PRINT "Computing vehicle totals - please wait." numveh%=0 FOR var2%=1 TO count% IF mission$(pt%(var2%),2)<>"X" THEN flg%=0 FOR var3%=1 TO numveh% IF mission$(pt%(var2%),5)=veh$(var3%,1) THEN veh%(var3%)=veh%(var3%)+1 flg%=1 END IF NEXT var3% IF flg%=0 THEN numveh%=numveh%+1 veh$(numveh%,1)=mission$(pt%(var2%),5) veh$(numveh%,2)=mission$(pt%(var2%),2) veh$(numveh%,3)=RIGHT$(mission$(pt%(var2%),3),2) veh%(numveh%)=1 END IF END IF NEXT var2% CLS PRINT fld$(5);TAB(19);fld$(2);TAB(27);"Year";TAB(32);"#";TAB(40);fld$(5);TAB(59);fld$(2);TAB(67);"Year";TAB(72);"#" FOR var4%=1 TO numveh% STEP 2 PRINT veh$(var4%,1);TAB(19);veh$(var4%,2);TAB(27);veh$(var4%,3);TAB(31);veh%(var4%); IF var4%+1<=numveh% THEN PRINT TAB(40);veh$(var4%+1,1);TAB(59);veh$(var4%+1,2);TAB(67);veh$(var4%+1,3);TAB(71);veh%(var4%+1) NEXT var4% PRINT PRINT PRINT "Return to the menu." RETURN annualtable: GOSUB computeannual CLS PRINT " Year";TAB(10);"USSR";TAB(20);"USA";TAB(30);"Year";TAB(40);"USSR";TAB(50);"USA" FOR var%=1 TO last% STEP 2 PRINT var%+1900+first%;TAB(9);annual%(var%,1);TAB(19);annual%(var%,2); IF var%+1<=last% THEN PRINT TAB(29);var%+1901+first%;TAB(39);annual%(var%+1,1);TAB(49);annual%(var%+1,2) NEXT var% PRINT PRINT PRINT "Total";TAB(20);"USSR =";final%(1);TAB(40);"USA =";final%(2) PRINT PRINT "Return to the menu." RETURN annualgraph: GOSUB computeannual CLS PRINT " 20|" PRINT " |" PRINT "M |" PRINT "i |" PRINT "s |";TAB(60);"Total" PRINT "s 15|" PRINT "i |";TAB(60);"USSR =";final%(1) PRINT "o |";TAB(60);"USA =";final%(2) PRINT "n |" PRINT "s |" PRINT " 10|";TAB(60);"Return" PRINT "P |";TAB(60);"to" PRINT "e |";TAB(60);"the" PRINT "r |";TAB(60);"menu." PRINT " |" PRINT "Y 5|" PRINT "e |" PRINT "a |" PRINT "r |" PRINT " |" PRINT " 0|" PRINT " "; FOR var4%=first%+1 TO first%+last%+5 STEP 5 PRINT var4%;" "; NEXT var4% PRINT " Year" FOR var2%=2 TO last% FOR var3%=1 TO 2 hor1=(var2%+4)*8-4 ver1=(20-annual%(var2%-1,var3%))*8+4 hor2=(var2%+5)*8-4 ver2=(20-annual%(var2%,var3%))*8+4 LINE (hor1,ver1)-(hor2,ver2),var3% NEXT var3% NEXT var2% verussr%=(20-annual%(last%,1))+1 verusa%=(20-annual%(last%,2))+1 LOCATE verussr%,last%+7 PRINT "USSR" LOCATE verusa%,last%+7 PRINT "USA" RETURN computeannual: CLS PRINT "Computing annual totals - please wait." FOR var%=1 TO 30 annual%(var%,1)=0 annual%(var%,2)=0 NEXT var% final%(1)=0 final%(2)=0 first%=VAL(RIGHT$(mission$(pt%(1),3),2))-1 last%=VAL(RIGHT$(mission$(pt%(count%),3),2))-first% FOR var2%=1 TO count% var3%=0 IF (mission$(var2%,2)<>"X") AND (mission$(var2%,2)="USSR") THEN var3%=1 IF (mission$(var2%,2)<>"X") AND (mission$(var2%,2)="USA") THEN var3%=2 IF var3%<>0 THEN annual%(VAL(RIGHT$(mission$(var2%,3),2))-first%,var3%)=annual%(VAL(RIGHT$(mission$(var2%,3),2))-first%,var3%)+1 final%(var3%)=final%(var3%)+1 END IF NEXT var2% RETURN savefile: CLS PRINT "Saving mission data - please wait." OPEN "SLMissions" FOR OUTPUT AS #1 FOR var2%=1 TO count% IF mission$(pt%(var2%),2)<>"X" THEN FOR fld%=1 TO 11 PRINT# 1,mission$(pt%(var2%),fld%) NEXT fld% END IF NEXT var2% CLOSE #1 PRINT PRINT "Return to the menu." RETURN checknation: WHILE (mission$(num1%,2)<>"USSR") AND (mission$(num1%,2)<>"USA") PRINT PRINT "The Nation must be USA or USSR." PRINT PRINT "What is the new ";fld$(2); INPUT mission$(num1%,2) mission$(num1%,2)=UCASE$(mission$(num1%,2)) WEND RETURN checkdate: WHILE (MID$(mission$(num1%,3),3,1)<>"/") OR (MID$(mission$(num1%,3),6,1)<>"/") OR (LEN(mission$(num1%,3))<>8) PRINT PRINT "The Date must be in MM/DD/YY format." PRINT PRINT "What is the new ";fld$(3); INPUT mission$(num1%,3) WEND RETURN startkey: PRINT PRINT "Hit the space bar to continue or the return key to quit." PRINT RETURN getkey: var$=INKEY$ IF var$<>CHR$(13) AND var$<>CHR$(32) THEN getkey RETURN bounds: asklow: PRINT "Start the list with what mission # ( 1 -";count%;")"; INPUT low% IF low%<1 OR low%>count% THEN asklow PRINT askhigh: PRINT "End the list with what mission # (";low%;"-";count%;")"; INPUT high% IF high%count% THEN askhigh RETURN printdata: PRINT "Mission #";num% PRINT mission$(pt%(num%),1);TAB(21);mission$(pt%(num%),2);TAB(26); PRINT mission$(pt%(num%),3);TAB(36);mission$(pt%(num%),4);TAB(46); PRINT mission$(pt%(num%),5);TAB(66);mission$(pt%(num%),6);" LBS" PRINT mission$(pt%(num%),7);" MIN";TAB(11);mission$(pt%(num%),8);" MI"; PRINT TAB(21);mission$(pt%(num%),9);" MI";TAB(31);mission$(pt%(num%),10); PRINT " DEG";TAB(41);mission$(pt%(num%),11) PRINT RETURN